ESP_12F.ino

					
#include "ESP_12F.h"

void ESP_12F_struct_Init(ESP_12f_t* Modul)
{
  Modul->rst_pin = 17; // Arduino Nano pin D2
  pinMode(Modul->rst_pin, OUTPUT);
  digitalWrite(Modul->rst_pin, HIGH);
  Modul->rst_delay = 100;
  Modul->response_wait_delay = 100;
  Modul->max_delays_amount = 100;
  Modul->max_reset_tries = 3;
}

bool ESP_12F_Connect(ESP_12f_t* Modul, status_flags_t* Status)
{
  Serial.println("Connecting to ESP-01");
  uint8_t delays_counter = 0;
  
  uint8_t reset_tries = 0;
 
  uint8_t i = 0;
  char Line[6];

  Serial.println("ESP_01 conecting routine");
  
  while((Status->ESP_01_connected == 0) && (reset_tries < Modul->max_reset_tries)) // if both ESP is not connected and timeout hasn't been reached
  {  
    //Serial.println("Here"); 
    Serial1.println("alive?");
    delay(Modul->response_wait_delay);
    delays_counter++;

    if(Serial1.available())
    {
      //Serial.println("data from esp received");
      while(Serial1.available())
      {
        Line[i] = Serial1.read();
        //Serial.println(Line[i]);
        if(Line[i] == '\n')
        {
          Line[i-1] = '\0';
          if(strcmp(Line, "YES") == 0)
          {
              Status->ESP_01_connected = 1;
          }
          else Status->ESP_01_connected = 0;
          i = 0;
        }
        else
          i++;
      }
    }

    if(delays_counter >= Modul->max_delays_amount) // if we wait more then [delays_counter*(Modul->max_delays_amount)/1000] seconds
    {
      Serial.println("Resetting the Modul");
      delays_counter = 0;
      reset_tries++;
      digitalWrite(Modul->rst_pin, LOW);
      delay(Modul->rst_delay);
      digitalWrite(Modul->rst_pin, HIGH);
    }
  }
}

/* 
 *  Sending of the infos of current states of the traffic lights to ESP-12F Modul
 */
void Send_Apel_State(ampel_t* Ampel)
{
  String Line = "post";

  for(uint8_t i = 0; i < 5; i++)
  {
    switch(Ampel->ein_ampel[i].future_state)
    {
      case GRUN: {Line = Line + "1";} break;
      case ROT: {Line = Line + "0";} break;
    }
  }
  
  Serial1.println(Line);
  Serial.println("Send Line: " + (String)Line);
}